উদাহরণ সহ JSON Logging

Java Technologies - লগ4জে (log4j) - Log4j এবং JSON Logging
154

Log4j একটি শক্তিশালী এবং জনপ্রিয় লগিং ফ্রেমওয়ার্ক যা Java প্রোগ্রামিং ভাষায় লগিং ব্যবস্থা সহজ এবং কার্যকর করে তোলে। এটি সাধারণত ডেভেলপারদের জন্য একটি বহুমুখী লগিং সিস্টেম হিসেবে ব্যবহৃত হয়। JSON Logging হচ্ছে লগ আউটপুটকে JSON (JavaScript Object Notation) ফরম্যাটে রূপান্তরিত করা, যা আরও স্ট্রাকচারড এবং বিশ্লেষণের জন্য উপযোগী।

JSON আউটপুট ডেটা অন্যান্য সিস্টেমের মধ্যে ট্রান্সফার এবং ম্যানিপুলেট করার জন্য সহজ, এবং এটি আরও বেশি কার্যকরী যখন আপনি লগ ফাইলগুলোকে সেন্ট্রালাইজড লগ সিস্টেম (যেমন ELK Stack, Splunk) এ পাঠাতে চান।

এখানে Log4j ব্যবহার করে JSON Logging কিভাবে সেটআপ করা যায় তা বিস্তারিতভাবে দেখানো হবে।


১. Log4j দিয়ে JSON Logging কনফিগারেশন

Log4j-এ JSON আউটপুট ফরম্যাট কনফিগার করার জন্য log4j2-json-layout ব্যবহার করা হয়। এটি JSON স্টাইলে লগ আউটপুট প্রদান করে, যা অটোমেটিকভাবে লগ মেসেজ, টাইমস্ট্যাম্প, লগ লেভেল, ক্লাসের নাম এবং আরও অন্যান্য তথ্য আউটপুট হিসেবে দেয়।

১.১ Maven Dependency for Log4j JSON Layout

প্রথমে, আপনার pom.xml ফাইলে নিচের ডিপেনডেন্সি যোগ করুন:

<dependencies>
    <!-- Log4j 2 JSON Layout Dependency -->
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.14.1</version>
    </dependency>
</dependencies>

এখানে log4j-core ডিপেনডেন্সি যুক্ত করা হয়েছে যা Log4j 2.x এর কোর কার্যক্রম এবং JSON আউটপুট ফিচার প্রদান করে।


২. log4j2.xml কনফিগারেশন

এখন, আপনাকে log4j2.xml কনফিগারেশন ফাইলে JSON Layout সেটআপ করতে হবে। এতে আপনি কনসোল বা ফাইলে JSON আউটপুট কনফিগার করতে পারবেন।

২.১ JSON Layout Console Appender Example

নিচে একটি উদাহরণ দেয়া হলো যেখানে JSON ফরম্যাটে লগ আউটপুট কনফিগার করা হয়েছে:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <!-- Console Appender with JSON Layout -->
        <Console name="Console" target="SYSTEM_OUT">
            <Layout class="org.apache.logging.log4j.core.layout.JsonLayout">
                <KeyValuePair key="timestamp" value="%d{yyyy-MM-dd HH:mm:ss}"/>
                <KeyValuePair key="level" value="%p"/>
                <KeyValuePair key="logger" value="%c"/>
                <KeyValuePair key="message" value="%m"/>
                <KeyValuePair key="exception" value="%ex"/>
            </Layout>
        </Console>

        <!-- File Appender with JSON Layout -->
        <File name="File" fileName="logs/app-log.json">
            <Layout class="org.apache.logging.log4j.core.layout.JsonLayout">
                <KeyValuePair key="timestamp" value="%d{yyyy-MM-dd HH:mm:ss}"/>
                <KeyValuePair key="level" value="%p"/>
                <KeyValuePair key="logger" value="%c"/>
                <KeyValuePair key="message" value="%m"/>
                <KeyValuePair key="exception" value="%ex"/>
            </Layout>
        </File>
    </Appenders>

    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="File"/>
        </Root>
    </Loggers>
</Configuration>

এখানে, JsonLayout ব্যবহৃত হয়েছে কনসোল এবং ফাইল উভয় ক্ষেত্রেই JSON আউটপুট কনফিগার করার জন্য। KeyValuePair ব্যবহার করে JSON এর ফিল্ড কাস্টমাইজ করা হয়েছে (যেমন timestamp, level, logger, message, exception)।


৩. Log4j JSON Logging Example in Code

এখন, কোডে লগ তৈরি করার জন্য Logger ইনস্ট্যান্স ব্যবহার করা হবে। এটি সরাসরি JSON ফরম্যাটে লগ আউটপুট করবে, যেহেতু log4j2.xml কনফিগারেশন ফাইলে JSON আউটপুট কনফিগার করা হয়েছে।

৩.১ Java Code Example

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class App {
    private static final Logger logger = LogManager.getLogger(App.class);

    public static void main(String[] args) {
        logger.info("This is an info log");
        logger.error("This is an error log", new RuntimeException("Test Exception"));
    }
}

এখানে, LogManager.getLogger() ব্যবহার করে Logger তৈরি করা হয়েছে এবং infoerror মেসেজ লগ করা হয়েছে। যখন এই কোডটি রান করবে, কনসোল বা লগ ফাইলে JSON আউটপুট দেখা যাবে।


৪. Sample JSON Log Output

যখন আপনি লগ মেসেজটি চালান, তখন কনসোল বা ফাইল আউটপুট JSON ফরম্যাটে দেখা যাবে।

৪.১ Sample JSON Console Output

{
  "timestamp": "2024-12-22 15:30:00",
  "level": "INFO",
  "logger": "App",
  "message": "This is an info log",
  "exception": null
}

৪.২ Sample JSON File Output

{
  "timestamp": "2024-12-22 15:30:00",
  "level": "ERROR",
  "logger": "App",
  "message": "This is an error log",
  "exception": "java.lang.RuntimeException: Test Exception"
}

এখানে, JSON আউটপুটে timestamp, level, logger, message, এবং exception ফিল্ড দেখানো হচ্ছে।


৫. Log4j JSON Logging এর সুবিধা

  1. Structured Data: JSON ফরম্যাটে লগ আউটপুট ব্যবহারের ফলে এটি আরও স্ট্রাকচারড এবং পাঠযোগ্য হয়ে ওঠে।
  2. Easy to Parse: JSON আউটপুট অন্যান্য সিস্টেমের মাধ্যমে সহজে পার্স এবং প্রসেস করা যায়।
  3. Centralized Logging: JSON ফরম্যাটে লগ সংরক্ষণ করলে সেন্ট্রালাইজড লগ ম্যানেজমেন্ট সিস্টেমে সহজেই পাঠানো যায় (যেমন, ELK Stack বা Splunk).
  4. Human and Machine Readable: JSON ফরম্যাটে লগ থাকা সহজে মেশিন এবং মানুষ উভয়ের দ্বারা পড়া যায়।
  5. Enhanced Searchability: JSON ফরম্যাটে লগিং করা হলে, ফিল্ড ভ্যালু অনুযায়ী সঠিকভাবে লগের মধ্যে সার্চ করা সম্ভব হয়।

সারাংশ

Log4j দিয়ে JSON Logging কনফিগারেশন সেটআপ করার মাধ্যমে আপনি আরও স্ট্রাকচারড এবং ফিল্ড-বেসড লগ আউটপুট পাবেন। এটি log4j2.xml কনফিগারেশন ফাইলে JsonLayout ব্যবহার করে সহজেই করা যায়। JSON আউটপুট এক্সটেনশন হিসেবে কনসোল এবং ফাইল উভয় ক্ষেত্রেই কাজ করতে পারে এবং সেন্ট্রালাইজড লগিং সিস্টেমে ব্যবহার করার জন্য এটি উপযোগী। এটি লগ মেসেজ প্রক্রিয়াকরণ এবং বিশ্লেষণকে আরও কার্যকরী করে তোলে।


Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...